const path = require('path') //引入path模块

//path.basename:提供一个文件路径,获取到最基本的文件名(默认加上后缀),如果后面有添加后缀,则输出不带后缀的文件名
console.log(path.basename('a/b/c/index.html'))
console.log(path.basename('a/b/c/index.html',"html"))
console.log(path.basename('a/b/c/index.html',"js"))  //后缀不匹配的话默认认为不带后缀

//path.sep:用于获取路径内部的分隔符（目录/文件之间）,node的分隔符是跨平台的,
console.log(path.sep)

//path.delimiter:用于获取多个路径之间的分隔符（环境变量等）
console.log(path.delimiter)

//path.dirname: 获取输入到函数中路径的目录
console.log(path.dirname('a/b/c')) 
console.log(path.dirname('a/b/c.js')) 


//path.extname:获取文件的后缀名
console.log(path.extname('a/b/c.js'))

//path.join:将多段路径拼接成一段完整的路径
console.log(path.join("a","b","c","c.js"))
console.log(path.join("a","b","c","../","c.js")) //可以支持../


//path.normallize: 用于将一段路径进行规范
console.log(path.normalize("a/b/c/d/../c.js"))

//path.relative: 用于求两个路径的相对路径查找关系,也就是说 输出的结果是文件1相对与文件2的路径

console.log(path.relative('a/b/c.js',"b/b/c/d/d.js"))

//path.resolve: 将文件路径转换成绝对路径
console.log(path.resolve('/a.js'))  //window操作系统有盘符的概念,当使用/的时候,会将当前工作目录/进程目录(非文件所在目录)的盘符作为盘符拼接
console.log(path.resolve('a.js'))  //当不使用/的时候,会相对于命令行执行的目录进行拼接,假如说我在D:\code 执行这个命令,那么会从D:\code开始拼接,拼接为D:\code\a.js
console.log(path.resolve('./a.js'))  //当使用./的时候,会相对于命令行执行的目录(命令提示符)进行拼接,假如说我在D:\code 执行这个命令,那么会从D:\code开始拼接,拼接为D:\code\a.js
//根据当前模块的目录来拼接绝对路径
console.log(path.resolve(__dirname,"./a.js")) //__dirname是当前文件的目录,所以会从当前文件的目录开始拼接a.js